package edzest.service;

import edzest.model.SungJuk;
import edzest.model.SungJukVO;

public class ArraySungJuk extends SungJuk{
	
	// 100개의 성적데이터를 저장하기 위해 배열 선언
	private SungJukVO[] sjdata = new SungJukVO[100];
	
	// SungJukVO 객체를 저장하는 배열에는 
	// 기본값으로 null이 자동적으로 저장
	
	// 성적 데이터를 배열에 추가할 때 
	// 저장될 위치를 기억하는 변수
	private int pos = -1; // position
	
	@Override
	public boolean newSungJuk(SungJukVO sj) {
		// 새로운 성적데이터를 배열에 저장
		sjdata[ ++pos ] = sj;
		return true;
	}
	
	@Override
	public String readSungJuk() {
		// 배열에 저장된 모든 성적데이터를 출력
		// 배열에 저장된 데이터를 하나씩 가져와서 출력
		String result = "";
		
		// SungJukVO[] sjdata 배열에 저장된 100개의 성적데이터를
		// 하니씩 읽어와서 toString 메서드를 통해
		// 성적데이터를 출력 (비추! 값이 비든 안비든 무조건 배열 다 읽으므로)
		// (SungJukVO클래스형 변수 선언 : SungJukVO클래스 배열)
		
		// for( SungJukVO sj : sjdata )
		// 	if(sj != null) // 성적데이터(sj)가 null이 아니면
		// 		result += sj.toString() + "\n";
				
				// sj = sjdata[0], sj = sjdata[1],.... sj = null -> result += null.toString() 널포인터익셉션
				// J17_SungJuk_v5에서 배열값 하나만 넣어주면
				// 0~99 중 0만 값있고 나머지는 null이라 
				// J17_SungJuk_v5에서 null포인터익셉션 발생
		
		// 위 for문을 보완하기 위해
		// sjdata 배열중 제대로 저장된 데이터만 읽어서
		// toString 메서드로 출력
		// 즉, 증가된 pos인덱스 까지만 읽음
		// SungJukVO sj;
		for( int i = 0 ; i <= pos; ++i) {
			SungJukVO sj = sjdata[ i ]; // 매번 SungJukVO 객체 생성, 비효율, for문 위에 SungJukVO객체 생성.
			result += sj.toString() + "\n";
		}
		
		return result;
	} // readSungJuk()메서드 오버라이드 끝
} // 기본클래스 SungJuk을 상속한 ArraySungJuk 끝
